package com.kreig133.spine.abstractmodel;

import com.kreig133.spine.interfaces.ExperimentResultSaver;
import com.kreig133.spine.interfaces.Spine;
import com.kreig133.spine.interfaces.Velebra;
import java.util.List;
import java.util.Map;

/**
 *
 * @author C.C.-fag
 */
abstract public class AbstractSpine implements Spine {

    static final public Object forSynchronize = new Object();
    protected Map<Double, List<AbstractState>> result;
    protected List<Velebra> velebrae;
    protected double currentTime;
    protected ExperimentResultSaver saver;

    abstract public void addState(AbstractVelebra velebra, AbstractState state);

    abstract public AbstractEnvironment getEnvironment(AbstractVelebra velebra);

    abstract public void doExperiment(AbstractExperiment e, ExperimentResultSaver saver);

    abstract public void setVelebrae(List<Velebra> velebrae);
    
    abstract public Map<Double, List<AbstractState>> getExperimentResult();
}
